package com.hackordie.bindables;

import javax.validation.constraints.Min;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

import org.hibernate.validator.constraints.NotEmpty;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType
@XmlRootElement
public class BindableComputerType {

    @XmlElement
    @NotEmpty
    private String name;

    @XmlElement
    @Min(1)
    private int maxFirewalls;

    @XmlElement
    @Min(1)
    private int maxHardDisks;

    @XmlElement
    @Min(1)
    private int maxNetworkCards;

    @XmlElement
    @Min(1)
    private int maxPowerSupplies;

    @XmlElement
    @Min(1)
    private int maxRams;

    @XmlElement
    @Min(1)
    private int maxProcessors;
    
    @XmlElement
    @Min(1)
    private int price;

    public BindableComputerType() {

    }

    public BindableComputerType(String name, int maxFirewalls,
            int maxHardDisks, int maxNetworkCards, int maxPowerSupplies,
            int maxRams, int maxProcessors, int price) {
        super();
        this.name = name;
        this.maxFirewalls = maxFirewalls;
        this.maxHardDisks = maxHardDisks;
        this.maxNetworkCards = maxNetworkCards;
        this.maxPowerSupplies = maxPowerSupplies;
        this.maxRams = maxRams;
        this.maxProcessors = maxProcessors;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getMaxFirewalls() {
        return maxFirewalls;
    }

    public void setMaxFirewalls(int maxFirewalls) {
        this.maxFirewalls = maxFirewalls;
    }

    public int getMaxHardDisks() {
        return maxHardDisks;
    }

    public void setMaxHardDisks(int maxHardDisks) {
        this.maxHardDisks = maxHardDisks;
    }

    public int getMaxNetworkCards() {
        return maxNetworkCards;
    }

    public void setMaxNetworkCards(int maxNetworkCards) {
        this.maxNetworkCards = maxNetworkCards;
    }

    public int getMaxPowerSupplies() {
        return maxPowerSupplies;
    }

    public void setMaxPowerSupplies(int maxPowerSuplies) {
        this.maxPowerSupplies = maxPowerSuplies;
    }

    public int getMaxRams() {
        return maxRams;
    }

    public void setMaxRams(int maxRams) {
        this.maxRams = maxRams;
    }

    public int getMaxProcessors() {
        return maxProcessors;
    }

    public void setMaxProcessors(int maxProcessors) {
        this.maxProcessors = maxProcessors;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }
}